package org.graduation.recruitment.controller.resume;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.graduation.recruitment.entity.pojo.resume.EducationalBackground;
import org.graduation.recruitment.service.resume.EducationalBackgroundService;
import org.graduation.recruitment.utils.ResponseResult;
import org.graduation.recruitment.utils.Token;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/resume/educational_background")
@Slf4j
@Tag(name = "简历中教学背景接口", description = "提供简历中教学背景相关的CRUD操作")
@SecurityRequirement(name = "openApiSecurityScheme")
public class EducationalBackgroundController {

    // 注入教育背景服务层
    @Autowired
    private EducationalBackgroundService educationalBackgroundService;
    // 注入token处理工具类
    @Autowired
    private Token token;

    /**
     * 创建教育背景信息
     *
     * @param tokenStr              用户授权token
     * @param educationalBackground 教育背景实体
     * @return 创建结果
     */
    @PostMapping("/create")
    @Operation(summary = "创建教育背景接口")
    public ResponseResult createEducationalBackground(@RequestHeader("Authorization") String tokenStr, @RequestBody EducationalBackground educationalBackground) {
        // 设置学生ID
        educationalBackground.setStudentId(token.getUidByToken(tokenStr));
        // 保存教育背景信息
        educationalBackgroundService.save(educationalBackground);
        // 返回成功结果，携带创建的教育背景信息
        return ResponseResult.success(educationalBackground);
    }

    /**
     * 更新教育背景信息
     *
     * @param tokenStr              用户授权token
     * @param educationalBackground 教育背景实体
     * @return 更新结果
     */
    @PostMapping("/update")
    @Operation(summary = "更新教育背景接口")
    public ResponseResult updateEducationalBackground(@RequestHeader("Authorization") String tokenStr, @RequestBody EducationalBackground educationalBackground) {
        // 验证是否为本人操作
        if (!token.getUidByToken(tokenStr).equals(educationalBackground.getStudentId())) {
            return ResponseResult.fail("只能修改自己的教育背景");
        }
        // 更新教育背景信息
        if (educationalBackgroundService.updateById(educationalBackground)) {
            // 返回成功结果
            return ResponseResult.success();
        } else {
            // 返回失败结果
            return ResponseResult.fail("更新教育背景失败");
        }
    }

    /**
     * 删除教育背景信息
     *
     * @param tokenStr              用户授权token
     * @param educationalBackground 教育背景实体
     * @return 删除结果
     */
    @DeleteMapping("/delete")
    @Operation(summary = "删除教育背景接口")
    public ResponseResult deleteEducationalBackground(@RequestHeader("Authorization") String tokenStr, @RequestBody EducationalBackground educationalBackground) {
        // 验证是否为本人操作
        if (!token.getUidByToken(tokenStr).equals(educationalBackground.getStudentId())) {
            return ResponseResult.fail("只能删除自己的教育背景");
        }
        // 删除教育背景信息
        if (educationalBackgroundService.removeById(educationalBackground.getId())) {
            // 返回成功结果
            return ResponseResult.success();
        } else {
            // 返回失败结果
            return ResponseResult.fail("删除教育背景失败");
        }
    }

    /**
     * 根据简历ID获取所有教育背景信息
     *
     * @param resumeId 简历ID
     * @return 教育背景信息列表
     */
    @GetMapping("/all")
    @Operation(summary = "查看对应resume id的所有教育背景接口")
    public ResponseResult getAllEducationalBackground(@RequestParam Long resumeId) {
        // 根据简历ID获取所有教育背景信息
        return ResponseResult.success(educationalBackgroundService.getAllByResumeId(resumeId));
    }
}
